package com.sdu.hotel.entity.system;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Table;
import com.sdu.hotel.entity.base.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;

/**
 * @author xyh
 */
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table("sys_user")
@Accessors(chain = true)
public class SysUser extends BaseEntity implements Serializable {

//    /**
//     * 主键
//     */
//    @TableId(type = IdType.ASSIGN_ID)
////    @JsonSerialize(using = ToStringSerializer.class)
//    //private String userId;

    /**
     * 登录名
     */
    @Column("login_name")
    private String loginName;

    /**
     * 用户姓名
     */
    @Column("user_name")
    private String userName;

    /**
     * 密码
     */
    @JsonIgnore
    @Column("user_password")
    private String userPassword;


    /**
     * 单位名称简写
     */
    @Column("user_short_name")
    private String userShortName;

    /**
     * 用户类型
     * 1：下属单位
     * 2：管理部门
     * 3：人力资源部
     * 4：公司领导
     */
    @Column("user_type")
    private Integer userType;

    /**
     * 职务主键
     */
    @Column("post_id")
    private String postId;


    /**
     * 股权分类
     */
    @Column("dict_gqfl_value")
    private String dictGqflValue;


    /**
     * 是否部门负责人
     */
    @JsonIgnore
    @Column("department_leader")
    //private boolean departmentLeader = false;
    private Boolean departmentLeader;

    /**
     * 是否系统管理员
     */
    @JsonIgnore
    @Column("superman")
    //private boolean superman = false;
    private Boolean superman;

    /**
     * 用户描述
     */
    @JsonIgnore
    @Column("user_description")
    private String userDescription;

    /**
     * 登录失败小计
     */
    @JsonIgnore
    @Column("login_error_count")
    private Integer loginErrorCount;

    /**
     * 是否锁定
     */
    @JsonIgnore
    @Column("locked")
    private Boolean locked;

    /**
     * 联系人
     */
    @Column("contact_person")
    private String contractPerson;

    /**
     * 用户手机号
     */
    @Column("user_phone")
    private String userPhone;

    /**
     * 用户办公电话
     */
    @Column("user_office_tel")
    private String userOfficeTel;

    /**
     * 排序
     */
    @Column("sort")
    private Integer sort;

    /**
     * 是否系统自带用户，如admin
     */
    @JsonIgnore
    @Column("sys_init")
    private Boolean sysInit;


    /**
     * 修改时间
     */
    @JsonIgnore
    @Column(value = "update_time",onInsertValue = "now()")
    private Date updateTime;

    /**
     * OA系统部门名称
     */
    @JsonIgnore
    @Column(value = "oa_department_name")
    private String oaDepartmentName;

//    /**
//     * join其他表（跨表查询字段）
//     */
//    @Column(exist = false)
//    @BindQuery(comparison = Comparison.STARTSWITH,entity = SysRole.class,field = "role_name",condition = "this.id=sys_user_role.user_id " +
//            " And sys_user_role.role_id=id")
//    private String roleName;
}
